#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1


# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)


CFLAGS = -Wall -g

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
	CFLAGS += -O0
else
	CFLAGS += -O2
endif

ifneq (,$(findstring reprepro:libdb4.6,$(DEB_BUILD_OPTIONS)))
	DBFLAGS = --with-libdb=4.6
else
ifneq (,$(findstring reprepro:libdb3,$(DEB_BUILD_OPTIONS)))
	DBFLAGS = --with-libdb=3
else
ifneq (,$(findstring reprepro:libdb4.4,$(DEB_BUILD_OPTIONS)))
	DBFLAGS = --with-libdb=4.4
else
	DBFLAGS = --with-libdb=4.3
endif
endif
endif
ifneq (,$(findstring reprepro:nolibarchive,$(DEB_BUILD_OPTIONS)))
	ARCHIVEFLAGS= --without-libarchive
else
	ARCHIVEFLAGS= --with-libarchive
endif

config.status: configure
	dh_testdir
	./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
		    --prefix=/usr --mandir=\$${prefix}/share/man \
		    --with-libbz2 $(DBFLAGS) $(ARCHIVEFLAGS) \
		    --disable-dependency-tracking \
		    CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,syms" \
	|| ( echo configure failed with $$? ; cat config.log ; exit 1 )

build-indep: build-indep-stamp
build-arch: build-arch-stamp
build: build-arch-stamp build-indep-stamp

build-indep-stamp:
	touch build-indep-stamp
build-arch-stamp:  config.status
	dh_testdir
	$(MAKE)
	touch build-arch-stamp

clean:
	dh_testdir
	dh_testroot
	rm -f build-arch-stamp build-indep-stamp

	# clean up after the build process.
	if [ -e config.status ] ; then $(MAKE) distclean ; fi

	dh_clean

install: install-indep install-arch
install-indep: build-indep
install-arch: build-arch
	dh_testdir
	dh_testroot
	dh_clean -k
	dh_installdirs

	# install the package into debian/reprepro.
	$(MAKE) install DESTDIR=$(CURDIR)/debian/reprepro
	install -D -m 644 docs/reprepro.bash_completion debian/reprepro/etc/bash_completion.d/reprepro


# Build architecture-independent files here.
binary-indep: build-indep install-indep
# We have nothing to do.

# Build architecture-dependent files here.
binary-arch: build-arch install-arch
	dh_testdir
	dh_testroot
	dh_installchangelogs ChangeLog
	dh_installdocs
	# I really discourage building packages directly from CVS
	# but in case anyone insists in creating local packages that
	# way, do not include the CVS subdirs...
	dh_installexamples -XCVS
	dh_link
	dh_strip
	dh_compress
	dh_fixperms
	dh_installdeb
	dh_shlibdeps
	grep -v '^reprepro:.*=' debian/reprepro.substvars > debian/reprepro.substvars.new
	mv debian/reprepro.substvars.new debian/reprepro.substvars
#	# if compile without libarchive, we need the program ar from binutils available
	if test -f ar.o && grep -q libarchive debian/reprepro.substvars ; then \
		echo "reprepro:Depends=" >> debian/reprepro.substvars ; \
	else \
		echo "reprepro:Depends=binutils" >> debian/reprepro.substvars ; \
	fi
#	# warn if some dh_start to add some new dependencies, otherwise quiet
#	# the error about an unknown variable...
	@if grep -s "^misc:Depends=" debian/reprepro.substvars ; then \
		echo "Warning: new misc:Depends found in substvars" ; \
	else \
		echo "misc:Depends=" >> debian/reprepro.substvars ; \
	fi
	dh_gencontrol
	dh_md5sums
	dh_builddeb

binary: binary-indep binary-arch
.PHONY: build build-arch build-indep clean binary-indep binary-arch binary install install-arch install-indep
